package com.juc.semaphore.semaphore2;

import java.util.concurrent.Semaphore;

public class Service {
    /**
     * 同一时刻可以有 x个线程可以执行 acquire
     * 和release之间的代码
     * >1 时不保证安全性 ：
     * 原因是可能会出现多个线程共同访问共享变量 导致出现脏数据情况
     */
    private Semaphore semaphore = new Semaphore(2,true);

    public void testMethod(){
        try {
            semaphore.acquire();
            System.out.println(Thread.currentThread().getName() + " begin timer " + System.currentTimeMillis());
            Thread.sleep(5000);
            System.out.println(Thread.currentThread().getName() + " end timer " + System.currentTimeMillis());
            semaphore.release();
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
}
